package com.example.basic;

//第二：定义外部类
public class Outer {

    public void test1() {
        //局部内部类
        class Inner implements IA {
            @Override
            public void fun1() {
                System.out.println("匿名类实现fun1--方式一");
            }
        }

        //第四：调用父类对象方法，传递接口实现对象或父类的子类对象(重写或实现方法)
        new Outer().callInner(new Inner());
    }

    //匿名内部类
    public void test2() {
        new Outer().callInner(new IA() {
            @Override
            public void fun1() {
                System.out.println("匿名类实现fun1--方式二");
            }
        });
    }

    //第三：定义一个方法，参数为父类对象引用或接口对象
    public void callInner(IA a) {
        a.fun1();
    }
}



